package com.edfapp.utils;


import com.edfapp.costom.TXTBrainWave;
import com.edfapp.costom.TXTBrainWaveParser;

import java.util.ArrayList;
import java.util.List;

/**
 * @author hong
 * @description 描述
 * @time 2025/9/25 15:26
 **/
public class ListProcessor {
    /**
     * 确保List的大小为偶数，如果是奇数则移除最后一条元素
     * @param list 需要处理的列表
     * @param <T> 列表中元素的类型
     */
    public static <T> void ensureEvenSize(List<T> list) {
        // 检查列表是否为null或空
        if (list == null || list.isEmpty()) {
            return;
        }

        // 如果列表大小为奇数，移除最后一个元素
        if (list.size() % 2 != 0) {
            list.remove(list.size() - 1);
        }
    }

    public static List<TXTBrainWave> text2List(String filePath){
        // 1. 配置文件路径（需替换为你的实际文件路径）
        List<TXTBrainWave> brainWaveList = new ArrayList<>();
        // 2. 创建解析器并执行解析
        TXTBrainWaveParser parser = new TXTBrainWaveParser();
        try {
            brainWaveList = parser.parseFile(filePath);

            // 3. 处理解析后的数据（示例：打印数据总量和前10条详情）
            System.out.println("文件解析完成！共获取 " + brainWaveList.size() + " 条脑波数据");
            System.out.println("前10条数据详情：");
            for (int i = 0; i < Math.min(10, brainWaveList.size()); i++) {
                TXTBrainWave data = brainWaveList.get(i);
                System.out.printf(
                        "时间：%s | 注意力：%f | 冥想：%f | Delta：%f | 硬件版本：%s%n",
                        data.getCollectTime(),
                        data.getAtt(),
                        data.getMed(),
                        data.getDelta(),
                        data.getHardwareVersion()
                );
            }

            // 后续可扩展数据处理逻辑：如计算平均值、筛选异常数据、写入数据库等
            // 示例：计算注意力平均值
            double avgAtt = brainWaveList.stream()
                    .mapToDouble(TXTBrainWave::getAtt)
                    .average()
                    .orElse(0.0);
            System.out.printf("所有数据的注意力平均值：%.2f%n", avgAtt);
        } catch (java.io.FileNotFoundException e) {
            System.err.println("错误：文件不存在！路径：" + filePath);
        } catch (java.io.IOException e) {
            System.err.println("文件读取失败：" + e.getMessage());
        } catch (TXTBrainWaveParser.ParseException e) {
            System.err.println("数据解析失败：" + e.getMessage());
        }
        return brainWaveList;
    }
}
